package com.itgungnir.designpattern.memento;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 备忘录管理类，其中存储所有曾经操作后的数据，单例
 */
public class UserCaretaker {
	private static UserCaretaker instance; // 单例对象

	// 存储所有用户备忘录的集合，key是回滚点名称，value是备忘录对象
	private Map<String, List<HashMap<String, String>>> mementoes;

	private UserCaretaker() {
		this.mementoes = new HashMap<>();
	}

	// 单例方法
	public static UserCaretaker getInstance() {
		if (instance == null) {
			synchronized (UserCaretaker.class) {
				if (instance == null) {
					instance = new UserCaretaker();
				}
			}
		}
		return instance;
	}

	// 添加备忘录
	public void saveMemento(String name, List<HashMap<String, String>> memento) {
		if (!mementoes.containsKey(name)) {
			mementoes.put(name, memento);
		}
	}

	// 取出某个备忘录
	public List<HashMap<String, String>> rollbackMemento(String name) {
		if (mementoes.containsKey(name)) {
			return mementoes.get(name);
		}
		return null;
	}
}